Software Development with Feedback
In a well-orchestrated software development, the designers will have input in the analysis, the programmers into the design, and etc. Good programmers will negotiate with the design creators to improve te system architecture to facilitate good subsystem design and a smooth implementation path of the software. Supposing that a good software design exists, the programmer(or programming team more generally) must develop a cohesive plan of which order the elements the subsystems should be developed in. Note that in general not all elements are generated simultaneously! Attempting to do so would certainly result in a hacked-up mess.